; FIRST.ACT -- a few odd PROCs/FUNCs¢¢; LegalDrive - allows determining if¢ the specified drive number is¢ recognized by DOS¢¢; MaskInput - uses underlines as input¢ masking for user responses¢¢; UnMask - cleans off excess masking¢ that the editor picks up¢¢; Find - returns the position in a¢ CHAR ARRAY (string) where the¢ sub-string was found, returns¢ 0 if not found - search begins¢ at the position specified by¢ start¢ ¢; ------------------------------------¢ ¢BYTE FUNC LegalDrive(BYTE drive_num)¢BYTE drvbyt=$070A, bit, i¢BYTE ARRAY mask=[1 2 4 8 16 32 64 128], drive(8)¢ FOR bit=0 TO 7¢ DO¢ drive(bit)=(drvbyt&mask(bit)) RSH bit¢ OD¢RETURN(drive(drive_num-1))¢¢PROC MaskInput(BYTE width)¢BYTE i¢ FOR i=1 TO width¢ DO¢ Put('_)¢ OD¢ FOR i=1 TO width¢ DO¢ Put(')¢ OD¢RETURN¢¢PROC UnMask(CHAR ARRAY source,destination)¢BYTE i¢ FOR i=1 TO source(0)¢ DO¢ IF source(i)<>'_ THEN¢ destination(i)=source(i)¢ ELSE¢ EXIT¢ FI¢ OD¢ destination(0)=i-1¢RETURN¢¢BYTE FUNC Find(CHAR ARRAY str,sub BYTE start)¢BYTE i, j¢CHAR ARRAY tmp¢ FOR i=start TO str(0)¢ DO¢ IF sub(1)=str(i) THEN¢ tmp(0)=sub(0)¢ FOR j=1 TO sub(0)¢ DO¢ tmp(j)=str(j+i-1)¢ OD¢ IF SCompare(tmp,sub)=0 THEN¢ RETURN(i)¢ FI¢ FI¢ OD¢RETURN(0)¢¢